CloudTrail に記録される「OAuth2_Authorize_GET」イベントにおける “sub” の記録条件について教えてください

CloudTrail に記録される「OAuth2_Authorize_GET」イベントにおける “sub” の記録条件について教えてください

Clock Icon2023.07.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Amazon Cognito の OAuth2_Authorize_GET イベントについて CloudTrail のイベント履歴を調べたら、"sub" の項目が記録されているものとされていないものについて確認しました。

OAuth2_Authorize_GET イベントで CloudTrail に "sub" が記録されるための設定方法などあれば教えてください。

どう対応すればいいの?

"sub" については、Cognito ユーザープール内での一意のユーザー識別子であることや、認証されたユーザーに対して渡される JSON Web Token(JWT)である ID トークン などに含まれるクレーム情報となります。

  • ユーザープール属性 - Amazon Cognito

    sub

    sub 属性に基づいてユーザーをインデックス化して検索します。sub 属性は、各ユーザープール内で一意のユーザー識別子です。

  • ID トークンの使用 - Amazon Cognito

    sub

    認証されたユーザーの固有識別子 (UID) または件名。ユーザー名はユーザープール内で一意ではない可能性があります。sub クレームは、特定のユーザーを識別する最良の方法です。

上記内容より、OAuth2_Authorize_GET イベントについて、当該 Cognito ユーザープールにおいて既に登録されているユーザーが認証に成功した場合であるか、そうではなく、これから登録しようとしている(新規)ユーザーの場合であるかにより、CloudTrail への "sub" の項目の記録有無は異なります。

また、OAuth2_Authorize_GET イベントで CloudTrail に "sub" が記録されるかどうかは、Amazon Cognito のホストされた UI における、「サインアップ」、「サインイン」操作により確認することができます。

Amazon Cognito のホストされた UI における、「サインアップ」、「サインイン」の操作を行った際に OAuth2_Authorize_GET イベントについて、どのように CloudTrail に記録されているかを調べてみたので参考情報として、下記をご参照いただければ幸いです。

サインアップした時の CloudTrail の記録例

{
    "eventVersion": "1.08",
    "userIdentity": {
        "accountId": "012345678901"
    },
    "eventTime": "2023-0x-xxTxx:xx:xxZ",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "OAuth2_Authorize_GET",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "xxx:xxx:xxx:xxx",
    "userAgent": "xxx",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData": {
        "responseParameters": {
            "status": 302
        },
        "requestParameters": {
            "scope": [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "response_type": [
                "code"
            ],
            "redirect_uri": [
                "https://localhost/"
            ],
            "client_id": [
                "xxx"
            ]
        },
        "userPoolDomain": "xxx.auth.ap-northeast-1.amazoncognito.com",
        "userPoolId": "ap-northeast-1_xxx"
    },
    "requestID": "de2239bc-625d-45d7-8d9b-43f181043c07",
    "eventID": "fd0bdc47-dd3f-4e0c-bc7d-0e85429f3964",
    "readOnly": true,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "012345678901",
    "serviceEventDetails": {
        "serviceAccountId": "123456789012"
    },
    "eventCategory": "Management"
}

サインアップ後にサインインした時の CloudTrail の記録例

{
    "eventVersion": "1.08",
    "userIdentity": {
        "accountId": "012345678901"
    },
    "eventTime": "2023-0x-xxTxx:xx:xxZ",
    "eventSource": "cognito-idp.amazonaws.com",
    "eventName": "OAuth2_Authorize_GET",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "xxx:xxx:xxx:xxx",
    "userAgent": "xxx",
    "requestParameters": null,
    "responseElements": null,
    "additionalEventData": {
        "sub": "a123xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "responseParameters": {
            "status": 302
        },
        "requestParameters": {
            "scope": [
                "HIDDEN_DUE_TO_SECURITY_REASONS"
            ],
            "response_type": [
                "code"
            ],
            "redirect_uri": [
                "https://localhost/"
            ],
            "client_id": [
                "xxx"
            ]
        },
        "userPoolDomain": "xxx.auth.ap-northeast-1.amazoncognito.com",
        "userPoolId": "ap-northeast-1_xxx"
    },
    "requestID": "d0715b9e-b109-473d-8b17-8b37a694e8c4",
    "eventID": "1653faca-0de1-426d-bbf5-f60b1b165fee",
    "readOnly": true,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "012345678901",
    "serviceEventDetails": {
        "serviceAccountId": "123456789012"
    },
    "eventCategory": "Management"
}

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.